package com.googlecode.kipler.satisfiability.reasoner.profile;

import com.googlecode.kipler.satisfiability.reasoner.GenericReasoner;
import com.googlecode.kipler.satisfiability.reasoner.Reasoner;

/**
 * 
 * @author İnanç Seylan
 *
 */
public class ReasonerFactory {

	public static Reasoner getReasoner(Logic type) {
		GenericReasoner reasoner = new GenericReasoner();
		switch (type) {
		case ALC:
			reasoner.setProfile(new ALCReasoningProfile(reasoner));
			break;
		case LTLALC_EXPANDING:
			reasoner.setProfile(new LTLALCReasoningProfile(reasoner));
			break;
		case SHQ:
			reasoner.setProfile(new SHQReasoningProfile(reasoner, true));
			break;
		case SHIQ:
			reasoner.setProfile(new SHIQReasoningProfile(reasoner));
			break;
		case SHOIQ:
			reasoner.setProfile(new SHOIQReasoningProfile(reasoner));
			break;
		}
		return reasoner;
	}
}
